1. Technical Field
The invention relates generally to computing systems, and more particularly to a system and method for detecting memory leaks in applications running on monitored computer systems.
2. Description of the Related Art
A memory “leak” occurs when an application allocates a block of memory (either directly or indirectly through the use of various programming interfaces), and then fails to deallocate the memory when it is no longer required. Memory leaks consume system resources that could otherwise be available to the operating system and other applications.
Failure to release allocated memory is a very common programming error. Due to the complexity of software applications and their memory management, such memory leaks frequently exist in software delivered to end users. Because the memory requirements of applications change dynamically over time, it can be very difficult for an end-user to detect memory leaks in software that they are using.
When memory leaks go undetected, system resources that they consume become unavailable to the operating system and other applications. This has the effect of reducing performance, and in some cases, causing unscheduled downtime for applications and the operating system.
There are many memory leak detection solutions available to application developers. Such conventional solutions, however, require that the application be instrumented for memory leak detection through source code modifications, the use of an application debugger, or through libraries linked to applications. While these known solutions can be fairly precise in identifying memory leaks and can often pinpoint the source code where the leaked memory was allocated, they have the shortcoming that they require access to or modifications of the application in order to perform the memory leak detection. Such known solutions therefore do not solve the problem faced by typical end users that do not have access to the application source code. Additionally, end users wish to monitor applications in their normal mode of operation not in a special “debug” mode.
There are also known solutions available that can report when a system's resources have been consumed to the point that performance is suffering. These known solutions, however, are unable to determine which application is leaking. Additionally, they often report the problem when it has reached a crisis level. Finally, they may be unable to detect small memory leaks at all.
There is therefore a need for a method and system for detecting memory leaks that minimizes and/or eliminates one or more of the shortcomings set forth above.